home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / C Internet Config / Examples ƒ / Example / IC Switch Glue ƒ / IC Switch Glue.c
Encoding:
Text File  |  1995-12-02  |  13.3 KB  |  499 lines  |  [TEXT/SPM ]

  1. atic Boolean gICSwitchCanUseComponent=true;
  2. static Boolean gICSwitchCanUseLinkIn=true;
  3.  
  4. OSErr ICEnableComponent(void){
  5.     gICSwitchCanUseComponent=true;
  6.     return noErr;
  7. }
  8.  
  9. OSErr ICDisableComponent(void){
  10.     gICSwitchCanUseComponent=false;
  11.     return noErr;
  12. }
  13.  
  14. OSErr ICEnableLinkedCode(void){
  15.     gICSwitchCanUseLinkIn=true;
  16.     return noErr;
  17. }
  18.  
  19. OSErr ICDisableLinkedCode(void){
  20.     gICSwitchCanUseLinkIn=false;
  21.     return noErr;
  22. }
  23.  
  24. Boolean ICComponentEnabled(void){
  25.     return gICSwitchCanUseComponent;
  26. }
  27.  
  28. Boolean ICLinkedCodeEnabled(void){
  29.     return gICSwitchCanUseLinkIn;
  30. }
  31.  
  32. Boolean ICUsingComponent(ICInstance inst){
  33.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  34.     
  35.     // actually an error, but no way to return an error code
  36.     if (inst==(ICInstance)0)
  37.         return false;
  38.     
  39.     if (rp->instance!=(ComponentInstance)0)
  40.         return true;
  41.     return false;
  42. }
  43.  
  44. ICError ICStart(ICInstance* inst,OSType creator){
  45.     ICError err;
  46.     ICRRecordPtr instr;
  47.     
  48.     instr=(ICRRecordPtr)NewPtr(sizeof(ICRRecord));
  49.     err=MemError();
  50.     
  51.     if (err!=noErr)
  52.         return err;
  53.     
  54.     if (gICSwitchCanUseComponent){
  55.         err=ICCStart(&(instr->instance),creator);
  56.         if ((err!=noErr)&&(gICSwitchCanUseLinkIn)){
  57.             err=ICRStart(instr,creator);
  58.             gICSwitchCanUseComponent=false;
  59.         }
  60.     } else {
  61.         instr->instance=(ComponentInstance)0;
  62.         
  63.         if (gICSwitchCanUseLinkIn){
  64.             err=ICRStart(instr,creator);
  65.             if (err!=noErr)
  66.                 gICSwitchCanUseLinkIn=false;
  67.         } else {
  68.             err=icNotEnabled;
  69.         }
  70.     }
  71.     
  72.     if (err!=noErr){
  73.         DisposePtr((Ptr)instr);
  74.         *inst=(ICInstance)0;
  75.     } else {
  76.         *inst=(ICInstance)instr;
  77.     }
  78.     
  79.     return err;
  80. }
  81.  
  82. ICError ICStop(ICInstance inst){
  83.     ICError err;
  84.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  85.     
  86.     if (inst==(ICInstance)0)
  87.         return paramErr;
  88.     
  89.     if (rp->instance!=(ComponentInstance)0){
  90.         err=ICCStop(rp->instance);
  91.     } else {
  92.         err=ICRStop(rp);
  93.     }
  94.     
  95.     DisposePtr((Ptr)rp);
  96.     
  97.     return err;
  98. }
  99.  
  100. ICError ICGetComponentInstance(ICInstance inst,Ptr* cip){
  101.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  102.     
  103.     if (inst==(ICInstance)0)
  104.         return paramErr;
  105.     
  106.     *cip=(Ptr)rp->instance;
  107.     
  108.     if (*cip==(Ptr)0)
  109.         return badComponentInstance;
  110.     
  111.     return noErr;
  112. }
  113.  
  114. ICError ICFindConfigFile(ICInstance inst,short count,ICDirSpecArrayPtr folders){
  115.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  116.     
  117.     if (inst==(ICInstance)0)
  118.         return paramErr;
  119.     
  120.     if (rp->instance!=(ComponentInstance)0)
  121.         return ICCFindConfigFile(rp->instance,count,folders);
  122.     return ICRFindConfigFile(rp,count,folders);
  123. }
  124.  
  125. ICError ICFindUserConfigFile(ICInstance inst,ICDirSpec* where){
  126.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  127.     
  128.     if (inst==(ICInstance)0)
  129.         return paramErr;
  130.     
  131.     if (rp->instance!=(ComponentInstance)0)
  132.         return ICCFindUserConfigFile(rp->instance,where);
  133.     return ICRFindUserConfigFile(rp,where);
  134. }
  135.  
  136. ICError ICGeneralFindConfigFile(ICInstance inst,Boolean search_prefs,Boolean can_create,
  137.         short count,ICDirSpecArrayPtr folders){
  138.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  139.     
  140.     if (inst==(ICInstance)0)
  141.         return paramErr;
  142.     
  143.     if (rp->instance!=(ComponentInstance)0)
  144.         return ICCGeneralFindConfigFile(rp->instance,search_prefs,can_create,count,folders);
  145.     return ICRGeneralFindConfigFile(rp,search_prefs,can_create,count,folders);
  146. }
  147.  
  148. ICError ICChooseConfig(ICInstance inst){
  149.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  150.     
  151.     if (inst==(ICInstance)0)
  152.         return paramErr;
  153.     
  154.     if (rp->instance!=(ComponentInstance)0)
  155.         return ICCChooseConfig(rp->instance);
  156.     return ICRChooseConfig(rp);
  157. }
  158.  
  159. ICError ICChooseNewConfig(ICInstance inst){
  160.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  161.     
  162.     if (inst==(ICInstance)0)
  163.         return paramErr;
  164.     
  165.     if (rp->instance!=(ComponentInstance)0)
  166.         return ICCChooseNewConfig(rp->instance);
  167.     return ICRChooseNewConfig(rp);
  168. }
  169.  
  170. ICError ICGetConfigName(ICInstance inst,Boolean longname,StringPtr name){
  171.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  172.     
  173.     if (inst==(ICInstance)0)
  174.         return paramErr;
  175.     
  176.     if (rp->instance!=(ComponentInstance)0)
  177.         return ICCGetConfigName(rp->instance,longname,name);
  178.     return ICRGetConfigName(rp,longname,name);
  179. }
  180.  
  181. ICError ICGetConfigReference(ICInstance inst,ICConfigRefHandle ref){
  182.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  183.     
  184.     if (inst==(ICInstance)0)
  185.         return paramErr;
  186.     
  187.     if (rp->instance!=(ComponentInstance)0)
  188.         return ICCGetConfigReference(rp->instance,ref);
  189.     return ICRGetConfigReference(rp,ref);
  190. }
  191.  
  192. ICError ICSetConfigReference(ICInstance inst,ICConfigRefHandle ref,long flags){
  193.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  194.     
  195.     if (inst==(ICInstance)0)
  196.         return paramErr;
  197.     
  198.     if (rp->instance!=(ComponentInstance)0)
  199.         return ICCSetConfigReference(rp->instance,ref,flags);
  200.     return ICRSetConfigReference(rp,ref,flags);
  201. }
  202.  
  203. ICError ICSpecifyConfigFile(ICInstance inst,FSSpecPtr config){
  204.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  205.     
  206.     if (inst==(ICInstance)0)
  207.         return paramErr;
  208.     
  209.     if (rp->instance!=(ComponentInstance)0)
  210.         return ICCSpecifyConfigFile(rp->instance,config);
  211.     return ICRSpecifyConfigFile(rp,config);
  212. }
  213.  
  214. ICError ICGetSeed(ICInstance inst,long* seed){
  215.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  216.     
  217.     if (inst==(ICInstance)0)
  218.         return paramErr;
  219.     
  220.     if (rp->instance!=(ComponentInstance)0)
  221.         return ICCGetSeed(rp->instance,seed);
  222.     return ICRGetSeed(rp,seed);
  223. }
  224.  
  225. ICError ICGetPerm(ICInstance inst,ICPerm* perm){
  226.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  227.     
  228.     if (inst==(ICInstance)0)
  229.         return paramErr;
  230.     
  231.     if (rp->instance!=(ComponentInstance)0)
  232.         return ICCGetPerm(rp->instance,perm);
  233.     return ICRGetPerm(rp,perm);
  234. }
  235.  
  236. ICError ICDefaultFileName(ICInstance inst,StringPtr name){
  237.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  238.     
  239.     if (inst==(ICInstance)0)
  240.         return paramErr;
  241.     
  242.     if (rp->instance!=(ComponentInstance)0)
  243.         return ICCDefaultFileName(rp->instance,name);
  244.     return ICRDefaultFileName(rp,name);
  245. }
  246.  
  247. ICError ICBegin(ICInstance inst,ICPerm perm){
  248.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  249.     
  250.     if (inst==(ICInstance)0)
  251.         return paramErr;
  252.     
  253.     if (rp->instance!=(ComponentInstance)0)
  254.         return ICCBegin(rp->instance,perm);
  255.     return ICRBegin(rp,perm);
  256. }
  257.  
  258. ICError ICGetPref(ICInstance inst,StringPtr key,ICAttr* attr,Ptr buf,long* size){
  259.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  260.     
  261.     if (inst==(ICInstance)0)
  262.         return paramErr;
  263.     
  264.     if (rp->instance!=(ComponentInstance)0)
  265.         return ICCGetPref(rp->instance,key,attr,buf,size);
  266.     return ICRGetPref(rp,key,attr,buf,size);
  267. }
  268.  
  269. ICError ICSetPref(ICInstance inst,StringPtr key,ICAttr attr,Ptr buf,long size){
  270.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  271.     
  272.     if (inst==(ICInstance)0)
  273.         return paramErr;
  274.     
  275.     if (rp->instance!=(ComponentInstance)0)
  276.         return ICCSetPref(rp->instance,key,attr,buf,size);
  277.     return ICRSetPref(rp,key,attr,buf,size);
  278. }
  279.  
  280. ICError ICFindPrefHandle(ICInstance inst,StringPtr key,ICAttr* attr,Handle prefh){
  281.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  282.     
  283.     if (inst==(ICInstance)0)
  284.         return paramErr;
  285.     
  286.     if (rp->instance!=(ComponentInstance)0)
  287.         return ICCFindPrefHandle(rp->instance,key,attr,prefh);
  288.     return ICRFindPrefHandle(rp,key,attr,prefh);
  289. }
  290.  
  291. ICError ICGetPrefHandle(ICInstance inst,StringPtr key,ICAttr* attr,Handle* prefh){
  292.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  293.     
  294.     if (inst==(ICInstance)0)
  295.         return paramErr;
  296.     
  297.     if (rp->instance!=(ComponentInstance)0)
  298.         return ICCGetPrefHandle(rp->instance,key,attr,prefh);
  299.     return ICRGetPrefHandle(rp,key,attr,prefh);
  300. }
  301.  
  302. ICError ICSetPrefHandle(ICInstance inst,StringPtr key,ICAttr attr,Handle prefh){
  303.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  304.     
  305.     if (inst==(ICInstance)0)
  306.         return paramErr;
  307.     
  308.     if (rp->instance!=(ComponentInstance)0)
  309.         return ICCSetPrefHandle(rp->instance,key,attr,prefh);
  310.     return ICRSetPrefHandle(rp,key,attr,prefh);
  311. }
  312.  
  313. ICError ICCountPref(ICInstance inst,long* count){
  314.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  315.     
  316.     if (inst==(ICInstance)0)
  317.         return paramErr;
  318.     
  319.     if (rp->instance!=(ComponentInstance)0)
  320.         return ICCCountPref(rp->instance,count);
  321.     return ICRCountPref(rp,count);
  322. }
  323.  
  324. ICError ICGetIndPref(ICInstance inst,long n,StringPtr key){
  325.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  326.     
  327.     if (inst==(ICInstance)0)
  328.         return paramErr;
  329.     
  330.     if (rp->instance!=(ComponentInstance)0)
  331.         return ICCGetIndPref(rp->instance,n,key);
  332.     return ICRGetIndPref(rp,n,key);
  333. }
  334.  
  335. ICError ICDeletePref(ICInstance inst,StringPtr key){
  336.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  337.     
  338.     if (inst==(ICInstance)0)
  339.         return paramErr;
  340.     
  341.     if (rp->instance!=(ComponentInstance)0)
  342.         return ICCDeletePref(rp->instance,key);
  343.     return ICRDeletePref(rp,key);
  344. }
  345.  
  346. ICError ICEnd(ICInstance inst){
  347.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  348.     
  349.     if (inst==(ICInstance)0)
  350.         return paramErr;
  351.     
  352.     if (rp->instance!=(ComponentInstance)0)
  353.         return ICCEnd(rp->instance);
  354.     return ICREnd(rp);
  355. }
  356.  
  357. ICError ICEditPreferences(ICInstance inst,StringPtr key){
  358.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  359.     
  360.     if (inst==(ICInstance)0)
  361.         return paramErr;
  362.     
  363.     if (rp->instance!=(ComponentInstance)0)
  364.         return ICCEditPreferences(rp->instance,key);
  365.     return ICREditPreferences(rp,key);
  366. }
  367.  
  368. ICError ICParseURL(ICInstance inst,StringPtr hint,Ptr data,long len,long* selStart,long* selEnd,Handle url){
  369.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  370.     
  371.     if (inst==(ICInstance)0)
  372.         return paramErr;
  373.     
  374.     if (rp->instance!=(ComponentInstance)0)
  375.         return ICCParseURL(rp->instance,hint,data,len,selStart,selEnd,url);
  376.     return ICRParseURL(rp,hint,data,len,selStart,selEnd,url);
  377. }
  378.  
  379. ICError ICLaunchURL(ICInstance inst,StringPtr hint,Ptr data,long len,long* selStart,long* selEnd){
  380.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  381.     
  382.     if (inst==(ICInstance)0)
  383.         return paramErr;
  384.     
  385.     if (rp->instance!=(ComponentInstance)0)
  386.         return ICCLaunchURL(rp->instance,hint,data,len,selStart,selEnd);
  387.     return ICRLaunchURL(rp,hint,data,len,selStart,selEnd);
  388. }
  389.  
  390. ICError ICMapFilename(ICInstance inst,StringPtr filename,ICMapEntry* entry){
  391.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  392.     
  393.     if (inst==(ICInstance)0)
  394.         return paramErr;
  395.     
  396.     if (rp->instance!=(ComponentInstance)0)
  397.         return ICCMapFilename(rp->instance,filename,entry);
  398.     return ICRMapFilename(rp,filename,entry);
  399. }
  400.  
  401. ICError ICMapTypeCreator(ICInstance inst,OSType fType,OSType fCreator,StringPtr filename,ICMapEntry* entry){
  402.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  403.     
  404.     if (inst==(ICInstance)0)
  405.         return paramErr;
  406.     
  407.     if (rp->instance!=(ComponentInstance)0)
  408.         return ICCMapTypeCreator(rp->instance,fType,fCreator,filename,entry);
  409.     return ICRMapTypeCreator(rp,fType,fCreator,filename,entry);
  410. }
  411.  
  412. ICError ICMapEntriesFilename(ICInstance inst,Handle entries,StringPtr filename,ICMapEntry* entry){
  413.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  414.     
  415.     if (inst==(ICInstance)0)
  416.         return paramErr;
  417.     
  418.     if (rp->instance!=(ComponentInstance)0)
  419.         return ICCMapEntriesFilename(rp->instance,entries,filename,entry);
  420.     return ICRMapEntriesFilename(rp,entries,filename,entry);
  421. }
  422.  
  423. ICError ICMapEntriesTypeCreator(ICInstance inst,Handle entries,OSType fType,OSType fCreator,StringPtr filename,ICMapEntry* entry){
  424.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  425.     
  426.     if (inst==(ICInstance)0)
  427.         return paramErr;
  428.     
  429.     if (rp->instance!=(ComponentInstance)0)
  430.         return ICCMapEntriesTypeCreator(rp->instance,entries,fType,fCreator,filename,entry);
  431.     return ICRMapEntriesTypeCreator(rp,entries,fType,fCreator,filename,entry);
  432. }
  433.  
  434. ICError ICCountMapEntries(ICInstance inst,Handle entries,long* count){
  435.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  436.     
  437.     if (inst==(ICInstance)0)
  438.         return paramErr;
  439.     
  440.     if (rp->instance!=(ComponentInstance)0)
  441.         return ICCCountMapEntries(rp->instance,entries,count);
  442.     return ICRCountMapEntries(rp,entries,count);
  443. }
  444.  
  445. ICError ICGetIndMapEntry(ICInstance inst,Handle entries,long ndx,long* pos,ICMapEntry* entry){
  446.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  447.     
  448.     if (inst==(ICInstance)0)
  449.         return paramErr;
  450.     
  451.     if (rp->instance!=(ComponentInstance)0)
  452.         return ICCGetIndMapEntry(rp->instance,entries,ndx,pos,entry);
  453.     return ICRGetIndMapEntry(rp,entries,ndx,pos,entry);
  454. }
  455.  
  456. ICError ICGetMapEntry(ICInstance inst,Handle entries,long pos,ICMapEntry* entry){
  457.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  458.     
  459.     if (inst==(ICInstance)0)
  460.         return paramErr;
  461.     
  462.     if (rp->instance!=(ComponentInstance)0)
  463.         return ICCGetMapEntry(rp->instance,entries,pos,entry);
  464.     return ICRGetMapEntry(rp,entries,pos,entry);
  465. }
  466.  
  467. ICError ICSetMapEntry(ICInstance inst,Handle entries,long pos,ICMapEntry* entry){
  468.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  469.     
  470.     if (inst==(ICInstance)0)
  471.         return paramErr;
  472.     
  473.     if (rp->instance!=(ComponentInstance)0)
  474.         return ICCSetMapEntry(rp->instance,entries,pos,entry);
  475.     return ICRSetMapEntry(rp,entries,pos,entry);
  476. }
  477.  
  478. ICError ICDeleteMapEntry(ICInstance inst,Handle entries,long pos){
  479.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  480.     
  481.     if (inst==(ICInstance)0)
  482.         return paramErr;
  483.     
  484.     if (rp->instance!=(ComponentInstance)0)
  485.         return ICCDeleteMapEntry(rp->instance,entries,pos);
  486.     return ICRDeleteMapEntry(rp,entries,pos);
  487. }
  488.  
  489. ICError ICAddMapEntry(ICInstance inst,Handle entries,ICMapEntry* entry){
  490.     ICRRecordPtr rp=(ICRRecordPtr)inst;
  491.     
  492.     if (inst==(ICInstance)0)
  493.         return paramErr;
  494.     
  495.     if (rp->instance!=(ComponentInstance)0)
  496.         return ICCAddMapEntry(rp->instance,entries,entry);
  497.     return ICRAddMapEntry(rp,entries,entry);
  498. }
  499.